//
//  DataManager.h
//  iFlick
//
//  Created by 张 霄鹤 on 10-2-4.
//  Copyright 2010 xhzhang. All rights reserved.
//

#import <Foundation/Foundation.h>

#import "Constant.h"

/**
 * 数据管理器，管理软件的所有数据，包括导航数据等
 *
 *
 */
@interface DataManager : NSObject {

}

+ (DataManager *)sharedManager;

#pragma mark -
#pragma mark AppDocumentPath
/**
 Returns the path to the application's documents directory.
 */
+ (NSString *)applicationDocumentsDirectory ;

#pragma mark -

/**
 * 保存对象到文件
 * @param items 对象，将对象序列化到path文件中
 * @param path  文件路径
 */
+ (BOOL)saveObjectToFile:(id)items withName:(NSString *)path;
/**
 * 加载对象
 * @param path 路径，从path中加载对象
 */
+ (id)loadObjectFromFile:(NSString *)path;

/**
 * 保存数据到指定文件
 * 
 * @param data NSData 数据
 * @param path NSString 文件名
 * @return BOOL 是否保存成功
 */
+ (BOOL)saveBinaryToFile:(NSData *)data withName:(NSString *)path;

/**
 * 从指定的文件中读取数据
 * @param path 文件，相对于Document目录
 * @return NSData 数据 
 */
+ (NSData *)loadBinaryFromFile:(NSString *)path;

/**
 * 设置用户设置
 * @param value NSInteger 属性值
 * @param key   NSString  属性名
 */
+ (void)setConfigInteger:(NSInteger)value forKey:(NSString *)key;

/**
 * 设置用户设置
 * @param value NSString  属性值
 * @param key   NSString  属性名
 */
+ (void)setConfigString:(NSString *)value forKey:(NSString *)key;

/**
 * 获取整数型设置
 * @param key NSString
 * @return NSInteger
 */
+ (NSInteger)getConfigInteger:(NSString *)key;

/**
 * 获取字符串型设置
 * @param key NSString
 *
 */
+ (NSString *)getConfigString:(NSString *)key;

/**
 * 获取BOOL设置
 * @param key NSString* 名称
 * @return BOOL
 */
+ (BOOL)getConfigBool:(NSString *)key;

/**
 * 设置BOOL类型属性
 * @param value BOOL 属性值 
 * @param key   NSString* 属性名称
 */
+ (void)setConfigBool:(BOOL)value forKey:(NSString *)key;

/**
 * 保存所有数据
 * 1. 保存用户设置 NSUserDefaults
 */
+ (void)saveAll;

@end
